package main

import "fmt"

//C语言
//struct Person{
//
//}
//c语言里面，我们可以使用typedef int MyInt

type MyInt int

// go语言结构体使用typr+struct来处理
type Student struct {
	name   string
	age    int
	gender string
	score  float64
}

func main() {
	var i, j MyInt
	i, j = 10, 20
	fmt.Println("i+j", i+j)

	//创建变量并赋值
	lily := Student{
		name:   "lily",
		age:    30,
		gender: "女",
		score:  88, //最后一个元素必须加逗号，如果不加则必须与}同行
	}

	//使用结构体的字段
	fmt.Println("lily", lily.name, "age", lily.age, "gender", lily.gender, "score", lily.score)

	//->
	s1 := &lily
	fmt.Println("指针", s1.name, s1.age, s1.gender, s1.score)
	fmt.Println("指针（*s1）", (*s1).name)

	//在定义期间对结构体赋值时，如果每个字段都赋值了，那么字段的名字可以省略不写
	//如果只对局部变量赋值，那么必须明确指定变量的名字
	Duke := Student{
		"duke",
		20,
		"男",
		98,
	}
	Duke.age = 18
	fmt.Println("Duke", Duke)
}
